﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace BoletoElectronicoDesktop.AbmBeneficiarios
{
    public partial class FormAltaBeneficiarios : Form
    {
        //guarda la tabla que llena el datagridview con los postnets
        public DataTable tabla;

        public FormAltaBeneficiarios()
        {
            InitializeComponent();
        }

        private void label8_Click(object sender, EventArgs e)
        {

        }

        private void FormAltaBeneficiarios_Load(object sender, EventArgs e)
        {
            //inicio con la ventana maximizada
            this.WindowState = FormWindowState.Maximized;

            //cargo las rubros en el ComboBox
            DataTable rubros = BeneficiarioDAO.ObtenerRubros();
            comboRubro.DataSource = rubros;
            comboRubro.DisplayMember = "DescripcionRubro";
            comboRubro.ValueMember = "IdRubro";


            btnSeleccionar.Enabled = false;
            cbModelo.Enabled = false;

            //creo las columnas del dataTable
            tabla = new DataTable();

            tabla.Columns.Add("NumeroPostnet", typeof(string));
            tabla.Columns.Add("IdMarca", typeof(int));
            tabla.Columns.Add("DescripcionMarca", typeof(string));
            tabla.Columns.Add("IdModelo", typeof(int));
            tabla.Columns.Add("DescripcionModelo", typeof(string));
            dataGridView1.DataSource = tabla;
            
           

        }

         

        private void txtPostNet_TextChanged(object sender, EventArgs e)
        {
            this.Enabled = false;
        }

        private void txtNum_KeyPress(object sender, KeyPressEventArgs e)
        {
            Funciones.validarNumero(e);
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            //pongo todos los textBox en blanco
            txtRazonSocial.Text = "";
            txtCalle.Text = "";
            txtNum.Text = "";
            txtPiso.Text = "";
            txtDepto.Text = "";

            cbModelo.DataSource = null;
            cbMarca.DataSource = null;
            cbModelo.Enabled = false;
            //elimino las columnas de la tabla
            tabla = new DataTable();

            tabla.Columns.Add("NumeroPostnet", typeof(string));
            tabla.Columns.Add("IdMarca", typeof(int));
            tabla.Columns.Add("DescripcionMarca", typeof(string));
            tabla.Columns.Add("IdModelo", typeof(int));
            tabla.Columns.Add("DescripcionModelo", typeof(string));

            dataGridView1.DataSource = tabla;

                


        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            bool continuar = true;

            //valido que ningún campo obligatorio no esté completo
            //falta postnet
            if ((txtRazonSocial.Text == "") || (txtCalle.Text == "") || (txtNum.Text == "") || (comboRubro.Text == "") || (tabla.Rows.Count == 0))
            {
                MessageBox.Show("Complete todos los campos obligatorios", "Información");
                continuar = false;
            }
            //si están todos los campos completos, procedo a hacer el Alta
            if (continuar)
            {
                //Comprobamos que la razon social no exista

                int existe = BeneficiarioDAO.ExisteRazonSocial(txtRazonSocial.Text);
                if (existe != 0)
                {
                    MessageBox.Show("Ya existe un beneficiario con esa razón social, ingrese otra");

                }
                else //la razon social no existe => lo puedo insertar
                {
                    //inserto en la tabla Beneficiarios
                    BeneficiarioDAO.InsertarBeneficiario(txtRazonSocial.Text, txtCalle.Text, txtNum.Text, txtPiso.Text, txtDepto.Text, comboRubro.SelectedValue.ToString());
                    //pendiente: insertar en los postnet!!!
                    for (int i = 0; i < tabla.Rows.Count; i++)
                    {
                        string idBeneficiario = BeneficiarioDAO.ObtenerId(txtRazonSocial.Text);
                        BeneficiarioDAO.InsertarPostnet(tabla.Rows[i]["NumeroPostnet"].ToString(), idBeneficiario, tabla.Rows[i]["IdModelo"].ToString());
                    }

                    MessageBox.Show("Beneficiario agregado con éxito");

                    //limpio los textbox
                    txtRazonSocial.Text = "";
                    txtCalle.Text = "";
                    txtNum.Text = "";
                    txtPiso.Text = "";
                    txtDepto.Text = "";
                    cbModelo.DataSource = null;
                    cbMarca.DataSource = null;
                    tabla = new DataTable();
                    tabla.Columns.Add("NumeroPostnet", typeof(string));
                    tabla.Columns.Add("IdMarca", typeof(int));
                    tabla.Columns.Add("DescripcionMarca", typeof(string));
                    tabla.Columns.Add("IdModelo", typeof(int));
                    tabla.Columns.Add("DescripcionModelo", typeof(string));
                    dataGridView1.DataSource = tabla;
                    cbModelo.Enabled = false;



                }
            }

        }

        private void txtPiso_KeyPress(object sender, KeyPressEventArgs e)
        {
            Funciones.validarNumero(e);
        }

        private void cbMarca_Click(object sender, EventArgs e)
        {


            //cargo las marcas de los posibles postnets
            DataTable marcas = BeneficiarioDAO.ObtenerMarcas();
            cbMarca.DataSource = marcas;
            cbMarca.DisplayMember = "DescripcionMarca";
            cbMarca.ValueMember = "IdMarca";
            btnSeleccionar.Enabled = false;
            cbModelo.Enabled = true;

        }
        private void cbModelo_Click(object sender, EventArgs e)
        {
            DataTable modelo = BeneficiarioDAO.ObtenerModelos(cbMarca.SelectedValue.ToString());
            cbModelo.DataSource = modelo;
            cbModelo.DisplayMember = "DescripcionModelo";
            cbModelo.ValueMember = "IdModelo";
            btnSeleccionar.Enabled = true;
        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void cbMarca_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void cbModelo_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void btnSeleccionar_Click(object sender, EventArgs e)
        {
            if (txtNumeroPostnet.Text == "")
                MessageBox.Show("Ingrese el número de postnet");
            else // el usuario ingreso algo
            {
                int existeEnBase = BeneficiarioDAO.ExistePostnet(txtNumeroPostnet.Text);
                if (existeEnBase != 0) //ya existe el numero de postnet
                    MessageBox.Show("El número de postnet que desea agregar ya existe");
                else // el numero de posnet es valido en la base
                {
                    //busco que no esté en el datatable para agregar
                    int existeEnDataTable = 0;
                    for (int i = 0; i < tabla.Rows.Count; i++)
                    {
                        if (String.Compare(Convert.ToString(tabla.Rows[i][0].ToString()), txtNumeroPostnet.Text.ToString()) == 0)
                            existeEnDataTable = 1;
                    }
                    if (existeEnDataTable != 0)
                        MessageBox.Show("Acaba de ingresar ese número de postnet!");
                    else //numero valido en la base y en el datatable => lo agrego al datatable y datagrid
                    {

                        int idMarca = Convert.ToInt32(cbMarca.SelectedValue.ToString());
                        string nombreMarca = cbMarca.Text;
                        int idModelo = Convert.ToInt32(cbModelo.SelectedValue.ToString());
                        string nombreModelo = cbModelo.Text;
                        tabla.Rows.Add(txtNumeroPostnet.Text, idMarca, nombreMarca, idModelo, nombreModelo);
                        dataGridView1.DataSource = tabla;
                        dataGridView1.Columns["IdModelo"].Visible = false;
                        dataGridView1.Columns["IdMarca"].Visible = false;
                        cbModelo.DataSource = null;
                        cbMarca.DataSource = null;
                        cbModelo.Enabled = false;
                    }
                }
                txtNumeroPostnet.Text = "";
                btnSeleccionar.Enabled = false;
                cbModelo.DataSource = null;
                cbMarca.DataSource = null;
                cbModelo.Enabled = false;
            }
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            int indice = dataGridView1.CurrentRow.Index;
            tabla.Rows[indice].Delete();
            dataGridView1.DataSource = tabla;
        }

        private void txtNumeroPostnet_KeyPress(object sender, KeyPressEventArgs e)
        {
            Funciones.validarNumero(e);
        }













        }

        

        

        

       


       

               
    }

